数据类型划分: 可变数据类型 不可变数据类型
- 不可变数据类型: tuple(元组) bool int float str
- 可变数据类型: list dict(字典) set(集合)
数据类型: int float str bool
数据结构: list dict tuple set
1. int: 整型
int = 10
2. float: 浮点
float = 10.5
3. str:字符串
str = '字符串'
# ''' ''' 一般情况下代表多行注释 如果进行了赋值就代表了多行字符串 相当于 js 中的 `` 功能
str_long = '''
三月咸阳城,千花昼如锦。
谁能春独愁,对此径须饮。
穷通与修短,造化夙所禀。
'''
4. bool: 布尔
bool = True
bool = False
5. list: 列表
list = [1, 2, 3, 4]
6. tuple: 元组(只读列表) -> 元组与列表类似,不同之处在于元组的元素不能修改。
tuple = (1, 2, 3, 4)
7. dict: 字典 -> 和 js 中的对象一样都是键值对,不同之处在于 key值 一定要用单引号引着
dictionary = {'key1': 'val1', 'key2': 'val2'}
8. set: 集合 -> 是一个无序的不重复元素序列。自带去重功能
set = {1, 2, 2, 3, 3, 4} # 结果 {1, 2, 3, 4}
9. bytes -> 用作于存储和传递 -> 该数据类型只会是ASCII UTF-8 gbk
# 英文
se = 'Kevin'
se1 = se.encode('utf-8')
se2 = se.encode('gbk')
se3 = se.encode('ascii')
print(se1, type(se1)) # b'Kevin' <class 'bytes'>
print(se2, type(se2)) # b'Kevin' <class 'bytes'>
print(se3, type(se3)) # b'Kevin' <class 'bytes'>
# 中文
sc = '中文'
sc1 = sc.encode('utf-8')
sc2 = sc.encode('gbk')
print(sc1, type(sc1)) # b'\xe4\xb8\xad\xe6\x96\x87' <class 'bytes'>
print(sc2, type(sc2)) # b'\xd6\xd0\xce\xc4' <class 'bytes'>
# 可以通过查看 b 后面有多少位数就可以判断使用了什么编码方式
# 比如 \xe4\xb8\xad\xe6\x96\x87 有 24 位,则使用了 uft-8
# 比如 \xd6\xd0\xce\xc4 有 16 位,则使用了 gbk
10. None -> NoneType类型
- 在python中是没有 Null 的,取而代之的是 None
- None表示该值是一个空对象,空值是Python里一个特殊的值,用None表示
- None不能理解为0,因为0是有意义的,而None是一个特殊的空值
- None是一个特殊的常量
- None 和 False 不同
- None 不是 0
- None 不是空字符串
- 使用 None 进行判断的时候均为 False
- None 和任何其他的数据类型比较永远返回 False
- None 有自己的数据类型NoneType
- 可以将None赋值给任何变量,也可以将任何变量赋值给一个None值得对象,但是不能创建其他NoneType对象